// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})


/**
 * @method 获取菜谱列表
 * @param {object}
 * currentPage：当前页码，从1开始
 * pageNumber：返回的每页个数
 * searchValue：搜索关键词，不区分大小写
 * isUser：是否查询自己菜谱，查询自己传入true
 * classifyName：分类名称
 * @return {object} 菜谱列表数据
 */
// 搜索列表查询函数
exports.main = async (event, context) => {

  const db = cloud.database()
  const clientData = event.data || {}

  const {
    currentPage,
    pageNumber,
    searchValue,
    isUser,
    classifyName
  } = clientData

  const page = (currentPage || 1) - 1
  const pageNum = pageNumber || 10

  // 仅仅显示审核通过的数据
  let conditionSQL = {
    isChecked: true
  }
  // 判断是否关键词查询
  if (searchValue) {
    conditionSQL.menuName = new db.RegExp({
      regexp: searchValue,
      options: 'i' //i表示忽略大小写
    })
  }

  // 通过判断标志位当前进行当前openid用户查询
  if (isUser) {
    const openid = cloud.getWXContext().OPENID

    if (openid !== event.openid) {
      return {
        errCode: 401,
        errorMsg: '未登录，没有权限！'
      }
    }
    conditionSQL.openid = openid
  }

  // 判断是否分类查询,只要分类数组存在此字符串就能查出来
  if (classifyName) {
    conditionSQL.classifyList = classifyName
  }


  // 测试发现空对象where会忽略
  const [err, success] = await awaitWrap(
    db.collection('menus').where(conditionSQL).orderBy('creat_time', 'desc').skip(page * pageNum).limit(pageNum).get()
  )



  if (success) {
    return {
      data: success.data
    }
  } else {
    return {
      errorMsg: err
    }
  }

}


// await错误处理公共方法
const awaitWrap = (promise) => {
  return promise
    .then(success => [null, success])
    .catch(err => [err, null])
}